From: Keir Fraser Date: Thu, 2 Jun 2011 13:34:34 +0000 (+0100) Subject: x86: Replace ad-hoc bitmaskof() macro with single cpufeat_mask() defn. X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~10224^2~21 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https:/%22bookmarks://%22Dat/%22http:/www.example.com/cgi/%22https:/%22bookmarks:/%22Dat?a=commitdiff_plain;h=7a21e8ea1d296dcac2891bcdb02c4a12d1557f25;p=xen.git x86: Replace ad-hoc bitmaskof() macro with single cpufeat_mask() defn. Signed-off-by: Keir Fraser --- diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c index 9883c3fb7d..2839c0a5df 100644 --- a/xen/arch/x86/hvm/hvm.c +++ b/xen/arch/x86/hvm/hvm.c @@ -2380,7 +2380,6 @@ unsigned long copy_from_user_hvm(void *to, const void *from, unsigned len) return rc ? len : 0; /* fake a copy_from_user() return code */ } -#define bitmaskof(idx) (1U << ((idx) & 31)) void hvm_cpuid(unsigned int input, unsigned int *eax, unsigned int *ebx, unsigned int *ecx, unsigned int *edx) { @@ -2407,7 +2406,7 @@ void hvm_cpuid(unsigned int input, unsigned int *eax, unsigned int *ebx, /* Fix up OSXSAVE. */ if ( xsave_enabled(v) ) *ecx |= (v->arch.hvm_vcpu.guest_cr[4] & X86_CR4_OSXSAVE) ? - bitmaskof(X86_FEATURE_OSXSAVE) : 0; + cpufeat_mask(X86_FEATURE_OSXSAVE) : 0; break; case 0xb: /* Fix the x2APIC identifier. */ @@ -2438,7 +2437,7 @@ void hvm_cpuid(unsigned int input, unsigned int *eax, unsigned int *ebx, tsc_mode == TSC_MODE_DEFAULT and host_tsc_is_safe() returns 1 */ if ( v->domain->arch.tsc_mode != TSC_MODE_DEFAULT || !host_tsc_is_safe() ) - *edx &= ~bitmaskof(X86_FEATURE_RDTSCP); + *edx &= ~cpufeat_mask(X86_FEATURE_RDTSCP); break; } } @@ -2467,7 +2466,7 @@ int hvm_msr_read_intercept(unsigned int msr, uint64_t *msr_content) fixed_range_base = (uint64_t *)v->arch.hvm_vcpu.mtrr.fixed_ranges; hvm_cpuid(1, &cpuid[0], &cpuid[1], &cpuid[2], &cpuid[3]); - mtrr = !!(cpuid[3] & bitmaskof(X86_FEATURE_MTRR)); + mtrr = !!(cpuid[3] & cpufeat_mask(X86_FEATURE_MTRR)); switch ( msr ) { @@ -2579,7 +2578,7 @@ int hvm_msr_write_intercept(unsigned int msr, uint64_t msr_content) (uint32_t)msr_content, (uint32_t)(msr_content >> 32)); hvm_cpuid(1, &cpuid[0], &cpuid[1], &cpuid[2], &cpuid[3]); - mtrr = !!(cpuid[3] & bitmaskof(X86_FEATURE_MTRR)); + mtrr = !!(cpuid[3] & cpufeat_mask(X86_FEATURE_MTRR)); switch ( msr ) { diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c index 65a60ce714..e75a741df1 100644 --- a/xen/arch/x86/hvm/svm/svm.c +++ b/xen/arch/x86/hvm/svm/svm.c @@ -1190,7 +1190,6 @@ static void svm_fpu_dirty_intercept(void) vmcb_set_cr0(vmcb, vmcb_get_cr0(vmcb) & ~X86_CR0_TS); } -#define bitmaskof(idx) (1U << ((idx) & 31)) static void svm_cpuid_intercept( unsigned int *eax, unsigned int *ebx, unsigned int *ecx, unsigned int *edx) diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c index 0c7749a16e..b933aa4cec 100644 --- a/xen/arch/x86/hvm/vmx/vmx.c +++ b/xen/arch/x86/hvm/vmx/vmx.c @@ -1487,7 +1487,6 @@ static void vmx_fpu_dirty_intercept(void) } } -#define bitmaskof(idx) (1U << ((idx) & 31)) static void vmx_cpuid_intercept( unsigned int *eax, unsigned int *ebx, unsigned int *ecx, unsigned int *edx) @@ -1504,9 +1503,9 @@ static void vmx_cpuid_intercept( /* SYSCALL is visible iff running in long mode. */ hvm_get_segment_register(v, x86_seg_cs, &cs); if ( cs.attr.fields.l ) - *edx |= bitmaskof(X86_FEATURE_SYSCALL); + *edx |= cpufeat_mask(X86_FEATURE_SYSCALL); else - *edx &= ~(bitmaskof(X86_FEATURE_SYSCALL)); + *edx &= ~(cpufeat_mask(X86_FEATURE_SYSCALL)); break; } diff --git a/xen/include/asm-x86/cpufeature.h b/xen/include/asm-x86/cpufeature.h index 9ed1e97c8e..e274664be7 100644 --- a/xen/include/asm-x86/cpufeature.h +++ b/xen/include/asm-x86/cpufeature.h @@ -146,6 +146,7 @@ #define cpu_has(c, bit) test_bit(bit, (c)->x86_capability) #define boot_cpu_has(bit) test_bit(bit, boot_cpu_data.x86_capability) +#define cpufeat_mask(idx) (1u << ((idx) & 31)) #ifdef __i386__ #define cpu_has_vme boot_cpu_has(X86_FEATURE_VME)